﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AutorizaciondeViaje.Persistencia;
using AutorizaciondeViaje.Models;


namespace AutorizaciondeViaje.Negocio
{
    public class AdministracionServiceImpl : IAdministracionService
    {
        private UsuarioDAO usuarioDAO = new UsuarioDAO();
        #region Dependencias
        //UsuarioDAO usuarioDAO = null;
        #endregion

        #region Operaciones de negocio
        public Usuario RegistrarUsuario(string Nombre, string Apellidos, string CodArea, string CodigoG, string CCosto, string DNI, string Status)
        {
            // Excepción si falta algún dato requerido
            if (Nombre == null || Apellidos == null || CodArea == null ||
                CodigoG == null || CCosto == null || DNI == null || Status == null)
                throw new DatosInsuficientesException("Datos insuficientes para registrar el Cliente");
            Usuario UsuarioEncontrado = usuarioDAO.Buscar(CodigoG);
            if (UsuarioEncontrado != null)
                throw new EntidadRepetidaException("El Cliente ya esta Registrado");
            // Creación de la sala
            Usuario usuarioACrear = new Usuario();
            usuarioACrear.Nombres = Nombre;
            usuarioACrear.Apellidos = Apellidos;
            usuarioACrear.CodArea = CodArea;
            usuarioACrear.CodigoG = CodigoG;
            usuarioACrear.CCosto = CCosto;
            usuarioACrear.DNI = DNI;
            usuarioACrear.Status = Status;
            return usuarioDAO.Crear(usuarioACrear);
        }

        #endregion

        #region Métodos de soporte para entidad Usuario
        public Usuario ObtenerUsuario(int codigo)
        {
            return usuarioDAO.Obtener(codigo);
        }
        public Usuario ModificarUsuario(Usuario usuarioACrear)
        {
            return usuarioDAO.Modificar(usuarioACrear);
        }
        public void EliminarUsuario(Usuario usuarioACrear)
        {
            usuarioDAO.Eliminar(usuarioACrear);
        }
        public ICollection<Usuario> ListarUsuario()
        {
            return usuarioDAO.ListarTodos();
        }
   
        #endregion
    }
}